<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<root version="5">
	<item content="CUserPtr pUser = UserManager()-&gt;GetUserBySocketID(idSocket);luju@torch@nd" icon="none" branch="none" block="narrow" level="0" IsShown="true" IsBold="false" ShowBranch="false"/>
	<item content="bug系统操作流程说明.docx [在线查看]" icon="none" branch="close" block="narrow" level="0" IsShown="true" IsBold="false" ShowBranch="false">
		<item content="【bug】系统操作流程说明——4.26 - Windows Internet Explorerhttp://192.168.2.123/Group/BBS/Topic.aspx?CliId=477&amp;BoardId=3652&amp;TopicId=61124&amp;PageNo=1" icon="none" branch="none" block="wide" level="1" IsShown="false" IsBold="false" ShowBranch="false"/>
	</item>
	<item content="pUser-&gt;QueryStatus(STATUS_CHAOS)获取玩家当前的状态，状态在i_RoleDef.h中有定义有各类全局变量，在" icon="none" branch="none" block="narrow" level="0" IsShown="true" IsBold="false" ShowBranch="false"/>
	<item content="用户数据在user.h中定义" icon="none" branch="none" block="narrow" level="0" IsShown="true" IsBold="false" ShowBranch="false"/>
	<item content="10-06-02 10:22:05 马骏:文档看完了，基本上没啥问题我么现在mapgroup只有1个线程，X个线程是好早之前预留的，现在没用了。发送npc的和发送其他对象的信息是在sendblockinfo函数里面" icon="none" branch="close" block="narrow" level="0" IsShown="true" IsBold="false" ShowBranch="false">
		<item content="" icon="none" branch="none" block="wide" level="1" IsShown="false" IsBold="false" ShowBranch="false"/>
	</item>
	<item content="linux下调试多线程" icon="none" branch="open" block="narrow" level="0" IsShown="true" IsBold="false" ShowBranch="false">
		<item content="top -H -p 11065   //查看11065进程的线程信息gdb name 11065(gdb)info thread   列出其线程状态(gdb)thread 2     //调试该线程" icon="none" branch="none" block="narrow" level="1" IsShown="true" IsBold="false" ShowBranch="false"/>
	</item>
	<item content="" icon="none" branch="none" block="narrow" level="0" IsShown="true" IsBold="false" ShowBranch="false"/>
	<item content="ERP26299实现一个可调试的仇恨系统 为使怪物AI更有挑战性，促进各玩家职业之间的配合，需要实现一个仇恨系统。1、实现一个仇恨系统，可以驱动boss怪的攻击。2、定义一张表，用于配置玩家对boss怪各种攻击的仇恨规则。3、上面的表现在需要根据技能以及各职业的物理攻击分别配置。4、只有BOSS怪才有仇恨系统。6、需要实现测试相关的代码和pm命令，支持外部数据调试该系统。5、具体规则在设计文档中说明。" icon="flag" branch="close" block="narrow" level="0" IsShown="true" IsBold="false" ShowBranch="false">
		<item content="1. 仇恨的计算 (其中的xyz等表示在表中的可配置量) 仇恨值的计算将涉及到下面几个因素 1) 伤害或者辅助效果   a. 每点伤害将引起 x 点的仇恨   b. 如果是辅助引起的仇恨的话，则每点引起y点的仇恨，并辅助以被辅助对象      在boss仇恨表中位置的加成，当前攻击对象的加成，后两个加成不叠加，取大者 2) 职业因素：职业加成  -&gt; 没有职业的基本属性表 3) 技能因素：初始仇恨值，技能加成 --&gt; 放技能表中2. 仇恨的衰减  1) 仇恨列表上的目标不再攻击，则开始衰减，每隔x时间衰减y点仇恨  2) 衰减的点数辅以职业加成3. 攻击目标的改变 1) 嘲讽技能，强制更改其为攻击目标，x s，之后恢复正常的选择  2) 视boss本身的攻击距离与目标的距离进行相关计算进行加成来更改攻击目标    比如，boss本身攻击距离为10，玩家1距离为20，则如果玩家1要成为boss的攻击目标,    需要比当前仇恨值最大的玩家的仇恨高出x个百分点" icon="none" branch="none" block="shrink" level="1" IsShown="false" IsBold="false" ShowBranch="false"/>
		<item content="玩家死亡，暂不从列表中清除，仅仅将其仇恨值置0即可" icon="none" branch="none" block="narrow" level="1" IsShown="false" IsBold="false" ShowBranch="false"/>
	</item>
	<item content="如何架设时间同步服务器 --该词条未被审核 发表评论(0) 编辑词条1. 修改注册表以下项的键值 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\TimeProviders\NtpServer内的“Enabled”设置为“1”，打开时间同步服务功能。 2. 修改以下键值 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\Config里的“AnnounceFlags”设置为“5”，表示强制主机将它自身宣布为可靠的时间源，从而使用CMOS时钟。如果设置为“a”，则表示为采用外面的时间服务器。 3. 重启Win32Time服务 执行如下命令： net stop w32time &amp;&amp; net start w32time 参考资料 1.架设时间同步服务器NtpServer " icon="none" branch="close" block="narrow" level="0" IsShown="true" IsBold="false" ShowBranch="false">
		<item content="如何架设时间同步服务器-FAQ- 程序中心知识库-让程序员智慧地工作！ - 让程序员智慧地工作! - Windows Internet Explorerhttp://www.pc.nd/index.php?doc-view-4936" icon="none" branch="none" block="wide" level="1" IsShown="false" IsBold="false" ShowBranch="false"/>
	</item>
	<item content="在抛异常的时候，注意不要进行类型转换，直接将接到的异常抛出即可" icon="none" branch="none" block="narrow" level="0" IsShown="true" IsBold="false" ShowBranch="false"/>
	<item content="struct A{  virtual void test(){printf(&quot;A-test\n&quot;);}};struct B:A{  virtual void test(){printf(&quot;B-test\n&quot;);}};int main(){    try    {        B b;        throw b;    }catch(A&amp; a)    {        a.test();        try{        throw a;        }        catch(A&amp; b)        {            b.test();        }    }    return 0;}" icon="none" branch="close" block="narrow" level="0" IsShown="true" IsBold="false" ShowBranch="false">
		<item content="Gmail - [TL][C++]熟悉异常的同学请帮忙看一下下面这个问题，为何两个函数调用不一样？ - boquan58@gmail.com - Mozilla Firefoxhttps://mail.google.com/mail/?ui=2&amp;view=bsp&amp;ver=ohhl4rw8mbn4" icon="none" branch="none" block="wide" level="1" IsShown="false" IsBold="false" ShowBranch="false"/>
	</item>
	<item content="从以下几个方面，谈谈自己在试用期间的感受1、公司的价值观包含哪些要素？请谈谈自己对公司价值观的理解。" icon="none" branch="open" block="narrow" level="0" IsShown="true" IsBold="false" ShowBranch="false">
		<item content="公司的价值观包括： 快乐、学习、创新、真诚， 这是公司的文化，也是我们每个ND人所共有的文化基因快乐，是指在ND，游戏无处不在，在这里，能够享受工作，发现快乐，设计快乐，传递快乐。我们的快乐来自于学习时获得的成长感，创新时获得的成就感，真诚相待时得到的归属感学习，是一个人一生的事，员工的不懈学习，将极大提高公司的竞争力，学习不是只看书，更是要实践，在工作中实践，在实践中学习，通过学习解决工作中遇到的新挑战，这样也让我们有成长感创新，创新很多时候不是说一定要大刀阔斧的否定一切，重新来过，而可以是局部的完善、改良，这也是创新。与众不同是每个ND人工作都遵循着的一条规则，创新让我们拥有创造的激情，也用于成就感真诚，就是真诚相待，有话直说，对事不对人，这样的沟通方式有助于突破交流的壁垒，更快地解决问题，真诚相待让我们拥有归属感" icon="none" branch="none" block="narrow" level="1" IsShown="true" IsBold="false" ShowBranch="false"/>
		<item content="" icon="none" branch="close" block="narrow" level="1" IsShown="true" IsBold="false" ShowBranch="false">
			<item content="　　“快乐、学习、创新、真诚”是网龙企业文化的DNA，是每个网龙人所共有的文化基因。　　快乐：　　　　·在这里你会发现游戏无处不在　　　　·我们享受工作，发现快乐，设计快乐，传递快乐。　　　　·我们的快乐 = 成长感（学习）+ 成就感（创新）+ 归属感（真诚）。 　　学习：　　　　·学习力是竞争力，学习带给我们超常规的发展速度;　　　　·学习是实践，工作学习化、学习工作化;　　　　·通过学习让我们获得成长感;　　创新：　　　　·这里的人每天的工作都遵循一条规则——与众不同;　　　　·每个网龙人的血管里都流淌着创造的激情;　　　　·通过创新让我们获得成就感;　　真诚：　　　　·我们把有话直说当成我们沟通的标准;　　　　·我们更关心“什么是对的”而不是“谁是对的”;　　　　·真诚相待让我们获得归属感。" icon="none" branch="close" block="narrow" level="2" IsShown="false" IsBold="false" ShowBranch="false">
				<item content="网龙公司简介 -- 网龙公司 - Mozilla Firefoxhttp://192.168.2.123/html/news/2009/10_12/111207959.html" icon="none" branch="none" block="wide" level="3" IsShown="false" IsBold="false" ShowBranch="false"/>
			</item>
		</item>
	</item>
	<item content="2、请描述在试用期间的主要工作内容和主要成果。" icon="none" branch="open" block="narrow" level="0" IsShown="true" IsBold="false" ShowBranch="false">
		<item content="在试用期间主要完成了主城升级、仇恨系统、配合客户端表现脚本的功能实现、在原来的技能模块下实现了几个BOSS技能等功能此外还实现了一个数据驱动的技能模块和一个脚本的技能模块，想待GD正式下了技能的案子后再根据案子中技能的实际情况完善一下再合并到代码树中去" icon="none" branch="none" block="narrow" level="1" IsShown="true" IsBold="false" ShowBranch="false"/>
		<item content="eSOP - Windows Internet Explorerhttp://bpm.erp.nd/MyForm/FormDetail.aspx?action=Check&amp;appFormCode=281799&amp;autoid=249096&amp;SysTime=201008121629281653" icon="none" branch="none" block="shrink" level="1" IsShown="true" IsBold="false" ShowBranch="false"/>
	</item>
	<item content="3、请描述转正后的工作计划。继续加强与同事间的沟通合作，以产品为中心，积极主动认真地完成上级安排的任务，运用自己的技术，确保模块和服务器的稳定和高效" icon="none" branch="close" block="narrow" level="0" IsShown="true" IsBold="false" ShowBranch="false">
		<item content="员工转正评价表—eSOP - Windows Internet Explorerhttp://bpm.erp.nd/MyForm/FormDetail.aspx?action=Check&amp;appFormCode=281799&amp;autoid=249096&amp;SysTime=201008121629281653" icon="none" branch="none" block="wide" level="1" IsShown="false" IsBold="false" ShowBranch="false"/>
	</item>
	<item content="4、你对公司/部门发展有什么建议。" icon="none" branch="open" block="narrow" level="0" IsShown="true" IsBold="false" ShowBranch="false">
		<item content="公司做游戏很多年了，也有很丰富的经验，几乎可以做任何类型的网游。一般来说，不同类型的游戏其目标群体也不一样，当然会有小部分交集。如果能对公司的这些游戏的上市时间做个分配，尽量将同类型游戏的上市时间交叉开来，这样可以避免自己的同类型游戏由于上市时间过于集中而相互竞争的情况" icon="none" branch="none" block="narrow" level="1" IsShown="true" IsBold="false" ShowBranch="false"/>
		<item content="P - Windows Internet Explorerhttp://bpm.erp.nd/MyForm/FormDetail.aspx?action=Check&amp;appFormCode=281799&amp;autoid=249096&amp;SysTime=201008121629281653" icon="none" branch="none" block="shrink" level="1" IsShown="true" IsBold="false" ShowBranch="false"/>
	</item>
	<item content="第二次&quot;throw;&quot;就可以了，否则被强转。" icon="none" branch="close" block="narrow" level="0" IsShown="true" IsBold="false" ShowBranch="false">
		<item content="Gmail - [TL][C++]熟悉异常的同学请帮忙看一下下面这个问题，为何两个函数调用不一样？ - boquan58@gmail.com - Mozilla Firefoxhttps://mail.google.com/mail/?ui=2&amp;view=bsp&amp;ver=ohhl4rw8mbn4" icon="none" branch="none" block="wide" level="1" IsShown="false" IsBold="false" ShowBranch="false"/>
	</item>
	<item content="刚才实验了一下大概明白了，拷贝构造到异常栈上的对象类型是throw的时候决定类型的。也就是第一次构造出来的是个B对象，第二次构造出来的是个A对象。" icon="none" branch="close" block="narrow" level="0" IsShown="true" IsBold="false" ShowBranch="false">
		<item content="Gmail - [TL][C++]熟悉异常的同学请帮忙看一下下面这个问题，为何两个函数调用不一样？ - boquan58@gmail.com - Mozilla Firefoxhttps://mail.google.com/mail/?ui=2&amp;view=bsp&amp;ver=ohhl4rw8mbn4" icon="none" branch="none" block="wide" level="1" IsShown="false" IsBold="false" ShowBranch="false"/>
	</item>
	<item content="TestMFS" icon="none" branch="none" block="narrow" level="0" IsShown="true" IsBold="false" ShowBranch="false"/>
	<item content="感觉作者小题大做了。真正的测试是很丰富的，开发人员要做单元测试、功能测试、性能测试，测试人员要做场景测试、集成测试和自动测试。mock使用的场景仅仅是单元测试，保证代码的覆盖率和在预期环境下可以正常的工作。单元测试不能替代功能测试和场景测试，功能测试是真实的测试，需要依赖外部资源，测试基本功能点。场景测试比功能测试更复杂，是功能测试的复杂组合，涵盖了很多功能测试的地方，但是检查的内容更复杂一些。" icon="none" branch="close" block="narrow" level="0" IsShown="true" IsBold="false" ShowBranch="false">
		<item content="InfoQ: Mock不是测试的银弹 - Mozilla Firefoxhttp://www.infoq.com/cn/articles/thoughtworks-practice-partvi" icon="none" branch="none" block="wide" level="1" IsShown="false" IsBold="false" ShowBranch="false"/>
	</item>
	<item content="之前看了一下 cmockery 的mock有点不是太理解，现在明白了，用它实现：return (void*)mock();和will_return(funName, const_mock_Value)的方式。这个google开源的c单元测试框架也还是不错的，虽小功能不弱。http://cmockery.googlecode.com/svn/trunk/doc/index.html" icon="none" branch="close" block="narrow" level="0" IsShown="true" IsBold="false" ShowBranch="false">
		<item content="C单元测试之Mock Test篇 - Tony Bai - 博客大巴 - Mozilla Firefoxhttp://bigwhite.blogbus.com/logs/18879495.html" icon="none" branch="none" block="wide" level="1" IsShown="false" IsBold="false" ShowBranch="false"/>
	</item>
	<item content="多台服务器共享一个db，玩家数据共享" icon="none" branch="none" block="narrow" level="0" IsShown="true" IsBold="false" ShowBranch="false"/>
	<item content="用alloc / dealloc的话，256字节的数组可以搞定。随手写了个实现，没测试，正确性不保证。struct IdAllocator{ byte buf[256]; byte currNode;  IdAllocator() {  currNode = 0;  for(int i = 0; i &lt; 256; ++i)   buf[i] = i + 1; } byte Alloc() {  byte id = currNode;  currNode = buf[currNode];  return id; } void Free(byte id) {  buf[id] = currNode;  currNode = id; }}" icon="none" branch="close" block="narrow" level="0" IsShown="true" IsBold="false" ShowBranch="false">
		<item content="Gmail - [TL] 你是如何看待数据结构与算法的面试的 - boquan58@gmail.com - Mozilla Firefoxhttps://mail.google.com/mail/?ui=2&amp;view=bsp&amp;ver=ohhl4rw8mbn4" icon="none" branch="none" block="wide" level="1" IsShown="false" IsBold="false" ShowBranch="false"/>
	</item>
	<item content="char require_32_bit_integer_at_least[sizeof(int) &gt;= 4 ? 1 : -1];静态assert" icon="none" branch="close" block="narrow" level="0" IsShown="true" IsBold="false" ShowBranch="false">
		<item content="Date.cc - Microsoft Visual Studio" icon="none" branch="none" block="wide" level="1" IsShown="false" IsBold="false" ShowBranch="false"/>
	</item>
	<item content="&gt; 恩，缺点是强制关闭会丢未发生的数据。&gt; 还有个办法就是重编tcp协议，改头文件，把timewait值改小成1秒啥的。&gt;&gt; 以下参数是对连接数量非常大的服务器进行调优.&gt; 6.1  对于同时支持很多连接的服务器,新的连接可以重新使用TIME-WAIT套接字.**&gt;&gt; tcp_tw_reuse：此参数表示是否允许重新应用处于TIME-WAIT状态的socket用于新的TCP连接&gt; echo 1 &gt; /proc/sys/net/ipv4/tcp_tw_reuse&gt;&gt; 6.2  tcp_tw_recycle:启动TIME-WAIT 套接字状态的快速循环功能&gt;&gt; echo 1 &gt; /proc/sys/net/ipv4/tcp_tw_recycl&gt;&gt; 上万并发看来是不改不行。" icon="none" branch="close" block="narrow" level="0" IsShown="true" IsBold="false" ShowBranch="false">
		<item content="Gmail - 大量socket短连接，TIME_WAIT问题 - boquan58@gmail.com - Mozilla Firefoxhttps://mail.google.com/mail/?ui=2&amp;view=bsp&amp;ver=ohhl4rw8mbn4" icon="none" branch="none" block="wide" level="1" IsShown="false" IsBold="false" ShowBranch="false"/>
	</item>
	<item content="这个是正道,在项目中实践过,可行On 8月13日, 下午10时52分, lavi yang &lt;laviy...@gmail.com&gt; wrote:&gt; 恩，缺点是强制关闭会丢未发生的数据。&gt; 还有个办法就是重编tcp协议，改头文件，把timewait值改小成1秒啥的。&gt;&gt; 以下参数是对连接数量非常大的服务器进行调优.&gt; 6.1  对于同时支持很多连接的服务器,新的连接可以重新使用TIME-WAIT套接字.**&gt;&gt; tcp_tw_reuse：此参数表示是否允许重新应用处于TIME-WAIT状态的socket用于新的TCP连接&gt; echo 1 &gt; /proc/sys/net/ipv4/tcp_tw_reuse&gt;&gt; 6.2  tcp_tw_recycle:启动TIME-WAIT 套接字状态的快速循环功能&gt;&gt; echo 1 &gt; /proc/sys/net/ipv4/tcp_tw_recycl&gt;&gt; 上万并发看来是不改不行。" icon="none" branch="close" block="narrow" level="0" IsShown="true" IsBold="false" ShowBranch="false">
		<item content="Gmail - 大量socket短连接，TIME_WAIT问题 - boquan58@gmail.com - Mozilla Firefoxhttps://mail.google.com/mail/?ui=2&amp;view=bsp&amp;ver=ohhl4rw8mbn4" icon="none" branch="none" block="wide" level="1" IsShown="false" IsBold="false" ShowBranch="false"/>
	</item>
	<item content="Mocking Side Effects¶ Sometimes a method exhibits its effect not via returning a value but via side effects. For example, it may change some global state or modify an output argument. To mock side effects, in general you can define your own action by implementing ::testing::ActionInterface. " icon="none" branch="close" block="narrow" level="0" IsShown="true" IsBold="false" ShowBranch="false">
		<item content="googlemock-doc.pdf - 福昕阅读器V2.2 - [googlemock-doc.pdf]" icon="none" branch="none" block="wide" level="1" IsShown="false" IsBold="false" ShowBranch="false"/>
	</item>
	<item content="因为google mock需要用到一些全局变量，所以我们的mock对象不应该有全局的对象，否则将出现运行期错误，详见下面的说明：Issue 54:  	 the mock registry should be created on demand   		2 people starred this issue and may be notified of changes. 	Back to listStatus:  	WontFixOwner: 	zhanyong.wanClosed:  	Sep 2009Type-DefectPriority-MediumOpSys-AllUsabilitySign in to add a comment  	Reported by zhanyong.wan, Jun 23, 2009googlemock uses a global registry object to record the states of mockobjects.  If a mock object is created and expectations are set on it beforethe registry is created, the program will crash.We should create the registry the first time it&apos;s needed.Comment 1 by zhanyong.wan, Sep 21, 2009On second thought, we probably don&apos;t want to support this.InitGoogleMock() must be called to initialize Google Mock before it can be used, as the behavior of Google Mock can be affected by command line flags.  The command line flags cannot be obtained before main() is entered.  Therefore, Google Mock must not be used before main() is entered.Once main() is entered, the global registry object is already created and can be used.So, it&apos;s invalid for a user program to create a mock and set expectations on it before main() is entered.Status: WontFix► Sign in to add a comment " icon="none" branch="open" block="narrow" level="0" IsShown="true" IsBold="false" ShowBranch="false">
		<item content="Issue 54 - googlemock - the mock registry should be created on demand - Project Hosting on Google Code - Mozilla Firefoxhttp://code.google.com/p/googlemock/issues/detail?id=54" icon="none" branch="none" block="wide" level="1" IsShown="true" IsBold="false" ShowBranch="false"/>
	</item>
	<item content="On Jun 23, 2:02 pm, Vladimir Florentino &lt;megav...@gmail.com&gt; wrote:- Hide quoted text -- Show quoted text -&gt; I have a code like this:&gt; class Engine&gt; {&gt; public:&gt;         Engine(){mockSetup();}&gt;         void Report(const char* text, unsigned long flags = 0) {};&gt;         //MOCK_METHOD2(Report, void(const char* text, unsigned long flags));&gt;         //void Report(const char* text) { Report(text, 0);} // Not in&gt; original -- to deal with default argument.&gt;         //void InstallMouseEventHandler(MouseEventHandler*) {};&gt;         MOCK_METHOD1(InstallMouseEventHandler, void(MouseEventHandler*));&gt; private:&gt;         void mockSetup()&gt;         {&gt;                 /*&gt;                 EXPECT_CALL(*this, Report(_, _))&gt;                         .Times(AnyNumber());&gt; */&gt;                 EXPECT_CALL(*this, InstallMouseEventHandler(_))&gt;                         .Times(AnyNumber());&gt;         }&gt; };&gt; If i comment out this mock definition:&gt;         MOCK_METHOD1(InstallMouseEventHandler, void(MouseEventHandler*));&gt; and have the normal method, the tests run fine.&gt; Any mock definition in that class seems to crash the test.&gt; That engine object is basically a singleton with a global pointer,&gt; created in it&apos;s .cpp file.&gt; I have other mocked objects which run fine. However, from the other&gt; tests, none of those objects are global.You have, I would guess, run into the Static Initialization OrderFiasco, as detailed in the C++ FAQ Lite athttp://www.parashift.com/c++-faq-lite/ctors.html#faq-10.12. Somewherein the internals of the implementation of gmock there are presumablysome static registries of mock objects (or equivalent), which are, dueto an essentially random decision of your compiler, not beinginitialized before your own static object is. Therefore, your implicitattempt to access them caused by your call to EXPECT_CALL is crashing.A sensible way to get around this, assuming it is the problem, is touse the Construct On First Use idiom, instead of directly creating aglobal object. It&apos;s not worth my detailing that in full here, becauseit&apos;s also described in the C++ FAQ Lite immediately below the previouslink.Of course, if this is the problem, then maybe the implementation ofgmock should be doing the same thing...Hope this helps,JJ- Hide quoted text -- Show quoted text -&gt; The crash happens at the xtree file, from the std lib.&gt; This code talks to a  DLL.&gt; Can&apos;t think of any other relevant info.&gt; Here&apos;s the stack trace of the crash:&gt; &gt;    Test.exe!std::_Tree&lt;std::_Tmap_traits&lt;void const *,testing::`anonymous namespace&apos;::MockObjectState,std::less&lt;void const *&gt;,std::allocator&lt;std::pair&lt;void const * const,testing::`anonymous namespace&apos;::MockObjectState&gt; &gt;,0&gt; &gt;::_Lbound(const void * const &amp; _Keyval=0x00404ea8)  Line 1264 + 0x8 bytes&gt;         Test.exe!std::_Tree&lt;std::_Tmap_traits&lt;void const&gt; *,testing::`anonymous namespace&apos;::MockObjectState,std::less&lt;void const&gt; *&gt;,std::allocator&lt;std::pair&lt;void const * const,testing::`anonymous&gt; namespace&apos;::MockObjectState&gt; &gt;,0&gt; &gt;::lower_bound(const void * const &amp;&gt; _Keyval=0x00404ea8)  Line 1004 + 0x10 bytes&gt;         Test.exe!std::map&lt;void const *,testing::`anonymous&gt; namespace&apos;::MockObjectState,std::less&lt;void const&gt; *&gt;,std::allocator&lt;std::pair&lt;void const * const,testing::`anonymous&gt; namespace&apos;::MockObjectState&gt; &gt; &gt;::operator[](const void * const &amp;&gt; _Keyval=0x00404ea8)  Line 169 + 0x10 bytes&gt;         Test.exe!testing::Mock::Register(const void * mock_obj=0x00404ea8,&gt; testing::internal::UntypedFunctionMockerBase * mocker=0x00404ea8)&gt; Line 353 + 0x1d bytes&gt;         Test.exe!testing::internal::FunctionMockerBase&lt;void __cdecl&gt; (C4::MouseEventHandler *)&gt;::RegisterOwner(const void *&gt; mock_obj=0x00404ea8)  Line 1171 + 0xd bytes&gt;         Test.exe!C4X::Engine::gmock_InstallMouseEventHandler(const&gt; testing::Matcher&lt;C4::MouseEventHandler *&gt; &amp; gmock_a1={...})  Line 198&gt; + 0x33 bytes&gt;         Test.exe!C4X::Engine::mockSetup()  Line 208 + 0x67 bytes&gt;         Test.exe!C4X::Engine::Engine()  Line 191 + 0x59 bytes&gt;         Test.exe!C4X::`dynamic initializer for &apos;TheEngine&apos;&apos;()  Line 7 + 0x68&gt; bytes&gt;         Test.exe!_initterm(void (void)* * pfbegin=0x011807d4, void (void)* *&gt; pfend=0x01180bbc)  Line 903&gt;         Test.exe!_cinit(int initFloatingPrecision=1)  Line 307 + 0xf bytes&gt;         Test.exe!__tmainCRTStartup()  Line 249 + 0x7 bytes&gt;         Test.exe!mainCRTStartup()  Line 182 " icon="none" branch="close" block="narrow" level="0" IsShown="true" IsBold="false" ShowBranch="false">
		<item content="Crash. Is it GMock bug or mine? - Google C++ Mocking Framework | Google Groups - Mozilla Firefoxhttp://groups.google.com/group/googlemock/browse_thread/thread/e56fb324a645b44d/dc7ece3abde52af6?lnk=gst&amp;q=FunctionMockerBase#dc7ece3abde52af6" icon="none" branch="none" block="wide" level="1" IsShown="false" IsBold="false" ShowBranch="false"/>
	</item>
	<item content="WithArg&lt;N&gt;(a) Pass the N-th (0-based) argument of the mock function to action a and perform it. " icon="none" branch="close" block="narrow" level="0" IsShown="true" IsBold="false" ShowBranch="false">
		<item content="googlemock-doc.pdf - 福昕阅读器V2.2 - [googlemock-doc.pdf]" icon="none" branch="none" block="wide" level="1" IsShown="false" IsBold="false" ShowBranch="false"/>
	</item>
	<item content="通过allocconsole创建一个命令行后，不能直接通过cout输出到该console中，而只能使用_cprintf之类函数，如果要使用cout，printf这类函数的话，则需要将标准输入输出重定向一下，方法如下：悬崖边的猪的blog« 喜欢书,更喜欢书店寂寞来袭 »窗口程序中使用控制台的方法2006年11月27日 Monday 于 11:52 am · 发表在: programe在写窗口程序过程中,我们也可以打开一个Console,把一些调试过程中要输出的信息到里面去.这里我们主要用了控制台的产生与释放有函数:分别AllocConsole(); FreeConsole();下一个问题,怎么打印必需的信息至Console?首先获得标准输入输出的句柄.这个可以调用GetStdHandle()来实现.然后调用WriteFile()就可以实现往往Console中输出内容了.code如下HANDLE hOutput=GetStdHandle(STD_OUTPUT_HANDLE);unsigned long lgsize;WriteFile(hOutput,strbuf,strlen(strbuf),&amp;lgsize,0);相比较而言,我更习惯用cout,cin来进行输入输出(我这个懒,越省事的方法我越喜欢:-))既然都是流数据,我就能把他们都关联起来,怎么实现?很简单:定义两个文件流关联到STD_INPUT_HADNLE,STD_OUTPUT_HANDLE.再把他们指向stdin和stdout.一切OK.完整代码实现如下HANDLE hOutput=GetStdHandle(STD_OUTPUT_HANDLE);HANDLE hInPut=GetStdHandle(STD_INPUT_HANDLE);//redirect stdout and stdinint hCrt;FILE *hf,*hf2;hCrt = _open_osfhandle((intptr_t)hOutput,0×4000);    //--&gt; _O_TEXT 其实对应的是这个宏hf = _fdopen( hCrt, “w” );*stdout = *hf;hCrt = _open_osfhandle((intptr_t)hInPut, 0×4000);hf2 = _fdopen(hCrt,”r”);*stdin = * hf2;//other code here 好啦,可心情的cout and cin啦~" icon="none" branch="close" block="narrow" level="0" IsShown="true" IsBold="false" ShowBranch="false">
		<item content="悬崖边的猪的blog » 窗口程序中使用控制台的方法 - Mozilla Firefoxhttp://my.donews.com/wucr/2006/11/27/ipskeiovqkvhupzswvbxgqpwsiyjnezvurfz/" icon="none" branch="none" block="wide" level="1" IsShown="false" IsBold="false" ShowBranch="false"/>
	</item>
	<item content="对于缺省参数，在mock的子类中其实是不用考虑的" icon="none" branch="none" block="narrow" level="0" IsShown="true" IsBold="false" ShowBranch="false"/>
</root>
